package com.itheima.filters;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

// 如果我们不想让拦截生效 只需要把@WebFilter()注销掉即可
// @WebFilter(urlPatterns = {"/*"})
public class FilterDemo implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // Filter.super.init(filterConfig);
        System.out.println(" 我是int方法 只在服务器启动的时候 执行1次且只会执行1次" );
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println(" 我是拦截方法，只要有api 请求来了，会先进入这里，我这里放行了，才可以让请求进入Controller层" );
    //     参数3 FilterChain 是用来放行 对象，我们让 参数3 调用doFilter(参数1，参数2) 方法即可放行
    //     参数1是 HttpServletRequest类型的对象 参数2 是HttpServletResponse类型的对象 所以放行之前 要先强制转换一下
        filterChain.doFilter((HttpServletRequest)servletRequest,(HttpServletResponse)servletResponse);
    }

    @Override
    public void destroy() {
        // Filter.super.destroy();
        System.out.println(" 我是destory方法 只在服务器关闭的时候 执行1次且只会执行1次" );
    }
}
